#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<vector>
#include<string>
using namespace std;
//string add(string& s, string& t) {
//    string ret;
//    int ends = s.size() - 1, endt = t.size() - 1;
//    int next = 0;
//    while (ends >= 0 || endt >= 0)
//    {
//        int nums = ends >= 0 ? s[ends] - '0' : 0;
//        int numt = endt >= 0 ? t[endt] - '0' : 0;
//        int sum = nums + numt + next;
//        next = (sum) / 10;
//        ret.push_back(sum % 10 + '0');
//        ends--, endt--;
//    }
//    if (next == 1)
//        ret.push_back('1');
//    reverse(ret.begin(), ret.end());
//    return ret;
//}
//string solve(string s, string t) {
//    if (s.size() == 0 || t.size() == 0) return "";
//    if (s == "0" || t == "0") return "0";
//
//    int endt = t.size() - 1;
//    string ret;
//    while (endt >= 0)
//    {
//        string tmp;
//        int next = 0;
//
//        for (int j = 0; j < t.size()-endt-1; j++)
//            tmp.push_back('0');
//        for (int i = s.size()-1; i >=0 ; i--)
//        {
//            int num = (s[i] - '0') * (t[endt] - '0');
//            int push = (num + next) % 10;
//            next = (num + next) / 10;
//            tmp.push_back(push + '0');
//        }
//        if (next != 0)
//            tmp.push_back(next + '0');
//        reverse(tmp.begin(), tmp.end());
//
//        ret = add(ret, tmp);
//        endt--;
//    }
//    return ret;
//}
//int main()
//{
//    string s = "99", t = "99";
//    string ret = solve(s, t);
//    cout << ret;
//    return 0;
//
//}

//class Solution {
//public:
//    typedef long long LL;
//
//    struct ListNode
//    {
//        int val;
//        ListNode* next;
//    };
//    ListNode* addInList(ListNode* head1, ListNode* head2) {
//        // write code here
//        LL sum1 = 0;
//        ListNode* tmp1 = head1;
//        ListNode* tmp2 = head2;
//        while (tmp1)
//        {
//            sum1 += tmp1->val;
//            tmp1 = tmp1->next;
//        }
//        while (tmp2)
//        {
//            sum1 += tmp2->val;
//            tmp2 = tmp2->next;
//        }
//        LL len = 0, cnt = sum1;
//        string s;
//        while (cnt)
//        {
//            s.push_back(cnt % 10);
//            cnt /= 10;
//            len++;
//        }
//        reverse(s.begin(), s.end());
//        ListNode* head = new ListNode;
//        for (int i = 0; i < len; i++)
//        {
//            ListNode* tmp = new ListNode;
//            tmp->val = s[i];
//            if (i == 0) head->next = tmp;
//        }
//
//        return ret;
//    }
//};